package com.flydog.mall.service.pms;

import com.flydog.mall.common.api.PageResponse;
import com.flydog.mall.dto.PmsProductCategoryEntityParam;
import com.flydog.mall.dto.PmsProductCategoryParam;
import com.flydog.mall.dto.PmsProductCategoryWithChildrenItem;
import com.flydog.mall.entity.pms.PmsProductCategory;

import java.util.List;

/**
 * @author Cao
 * @description 商品分类服务
 * @create 2021-03-27
 */
public interface PmsProductCategoryService {

    /**
     * 创建商品分类
     * @param cate 分类信息
     * @return 创建的数量
     */
    int create(PmsProductCategoryParam cate);

    /**
     * 批量删除商品分类
     * @param ids 删除的分类ID列表
     * @return 删除的数量
     */
    int delete(List<Long> ids);

    /**
     * 修改分类信息
     * @param id 分类的ID
     * @param cate 修改后的数据
     * @return 修改的数量
     */
    int update(Long id, PmsProductCategoryParam cate);

    /**
     * 获取一个分类信息
     * @param id 分类的ID
     * @return 分类的数据
     */
    PmsProductCategoryEntityParam getCategory(Long id);


    /**
     * 以层级形式获取商品分类
     * @return 分类数据
     */
    List<PmsProductCategoryWithChildrenItem> listWithChildren();

    /**
     * 分页获取分类信息
     *
     * @param parentId 上级分类ID
     * @param pageSize 分布大小
     * @param pageNum 分页页码
     * @return 分页数据
     */
    PageResponse<PmsProductCategory> list(Long parentId, Integer pageSize, Integer pageNum);

    /**
     * 获取上级分类下的所有子分类信息
     * @param parentId 上级分类ID
     * @return 子分类列表
     */
    List<PmsProductCategory> list(Long parentId);

    /**
     * 批量修改导航状态
     * @param ids 修改分类ID
     * @param navStatus 修改后的状态
     * @return 修改的数量
     */
    int updateNavStatus(List<Long> ids, Integer navStatus);

    /**
     * 批量修改显示状态
     * @param ids 修改分类ID
     * @param showStatus 修改后的状态
     * @return 修改的数量
     */
    int updateShowStatus(List<Long> ids, Integer showStatus);


}
